class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        if(nums.size()==2){
            return nums;
        }
        vector<int> array(2);
        sort(nums.begin(),nums.end());
        auto it=nums.begin();
        int i=0;
        while((it+1)!=nums.end() && it!=nums.end()){
            if(*it!=*(it+1)){
                array[i]=*it;
                i++;
                it++;
            }else{
                it+=2;
            }
        }
        if(i==1){
            array[i]=*it;
        }
        return array;
    }
};
/*
1 2 1 3 2 5
1 1 2 2 1 5
*/
/*
10
1010
*/
// class Solution {
// public:
//     vector<int> singleNumber(vector<int>& nums) {
//         if(nums.size()==2){
//             return nums;
//         }
//         vector<int> array3(2);
//         int s=nums[0];
//         auto it=nums.begin();
//         it++;
//         while(it != nums.end()){
//             s^=*it;
//             it++;
//         }
//         int bit_1=0;
//         while((s&1)==0){
//             s >>= 1;
//             bit_1++;
//         }
//         int num1=0,num2=0;
//         it=nums.begin();
//         while(it!=nums.end()){
//             if(((*it>>bit_1)&1)==0){
//                 num1^=*it;
//             }else{
//                 num2^=*it;
//             }
//             it++;
//         }
//         array3[1]=num1;
//         array3[0]=num2;
//         return array3;
//     }
// };
